package org.Lin.util;

import org.json.JSONObject;

public class JsonUtil {

    public static String buildLoginRequest(int userID, String passwordHash) {
        JSONObject json = new JSONObject();
        json.put("type", "login");
        json.put("userID", userID);
        json.put("password", passwordHash);
        return json.toString();
    }

    public static String buildRegisterRequest(int userID, String name, String passwordHash, String email) {
        JSONObject json = new JSONObject();
        json.put("type", "register");
        json.put("userID", userID);
        json.put("name", name);
        json.put("password", passwordHash);
        json.put("email", email);
        return json.toString();
    }

    public static String buildChatRoomMessage(int senderId, String message) {
        JSONObject json = new JSONObject();
        json.put("type", "chatroom_message");
        json.put("sender_id", senderId);
        json.put("message", message);
        return json.toString();
    }

    public static String buildFriendMessage(int senderId, int receiverId, String messageData) {
        JSONObject json = new JSONObject();
        json.put("type", "friend_message");
        json.put("sender_id", senderId);
        json.put("receiver_id", receiverId);
        json.put("message_data", messageData);
        return json.toString();
    }

    public static String buildAdminOperation(String adminID, String operation, String targetUserID, String newStatus) {
        JSONObject json = new JSONObject();
        json.put("type", "admin_operation");
        json.put("adminID", adminID);
        json.put("operation", operation);
        if (targetUserID != null) json.put("targetUserID", targetUserID);
        if (newStatus != null) json.put("newStatus", newStatus);
        return json.toString();
    }

    public static boolean isOfType(JSONObject json, String expectedType) {
        return json.has("type") && json.getString("type").equals(expectedType);
    }
}
